//
// Created by Crestimes on 2024/11/15.
//

#include <fstream>
#include <sstream>

#include "TokenManager.h"
#include "global.h"


TokenManager::TokenManager(const vector<string>& buffs) {
    this->buffs = buffs;
    initTokens();
}


/**
 * 初始化tokens成员变量
 */
void TokenManager::initTokens() {
    // 构建tokens
    stringstream ss;
    for (const auto& line : buffs) {
        // 清空ss
        stringstream().swap(ss);
        ss << line;
        string tokenType, tokenValue;
        // 获取token类型（第一个位置）
        getline(ss, tokenType, ' ');
        // 剩下的都是token的原始内容
        getline(ss, tokenValue);
        tokens.emplace_back(tokenType, tokenValue, vector<GNode>());
    }
    // 最后一个token放结束标志
    tokens.emplace_back(END_CHARACTER, END_CHARACTER, vector<GNode>());
    // for (const auto& token : tokens) {
    //     cout << token.name << ": " << token.value << endl;
    // }
}
